{"version":3,"file":"static/chunks/pages/prize-draw/[id]-7e613dc74ec5259d.js","mappings":"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","sources":["webpack://_N_E/?915c","webpack://_N_E/./src/pages/prize-draw/[id].tsx","webpack://_N_E/./src/utils/helpers/createYupSchema.ts","webpack://_N_E/"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/prize-draw/[id]\",\n function () {\n return require(\"private-next-pages/prize-draw/[id].tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/prize-draw/[id]\"])\n });\n }\n ","import {\n AuthFill,\n Button,\n DropDown,\n Email,\n FirstName,\n LastName,\n MarketingConsent,\n Tel,\n Title,\n} from '@components/form/fields'\nimport { FormStep, FormWrapper } from '@components/form/layout'\nimport { Nav } from '@components/ui'\nimport { useCampaign } from '@contexts/useCampaign'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport { ERROR_MESSAGE } from '@utils/constants'\nimport { closeOverlay, getModels, getPageData } from '@utils/helpers'\nimport { createYupSchema } from '@utils/helpers/createYupSchema'\nimport { formEvent } from '@utils/helpers/tracking'\nimport { PrizeDrawCmsSchema } from '@utils/schemas'\nimport axios from 'axios'\nimport type { GetServerSideProps } from 'next'\nimport type { ParsedUrlQuery } from 'querystring'\nimport { useEffect, useMemo, useState } from 'react'\nimport { FormProvider, useForm } from 'react-hook-form'\nimport * as yup from 'yup'\n\nconst PrizeDraw = ({ content, tracking, brand, query }) => {\n const [submitResponse, setSubmitResponse] = useState('')\n const { hidden_fields: hiddenFields, fields } = content\n const campaign = useCampaign()\n\n let initialValues = {}\n const usedFields = []\n\n // build initialValues from cms fields\n PrizeDrawCmsSchema.forEach((item) => {\n const found = fields.some((el) => el.input_type === item.field)\n if (found) {\n if (item.field?.includes('_optional')) {\n // eslint-disable-next-line no-param-reassign\n item.id = item.id.replace('_optional', '')\n }\n initialValues[item.id] = item.value || ''\n }\n })\n // remove empty response codes fields\n Object.keys(hiddenFields).forEach((key) => {\n if (hiddenFields[key] === '' || hiddenFields[key] === null) {\n delete hiddenFields[key]\n }\n })\n\n // combine all fields\n initialValues = {\n ...initialValues,\n ...hiddenFields,\n is_lexus: brand === 'lexus',\n is_dealer: false,\n dealer_name: '',\n }\n\n // map fields with schemas\n PrizeDrawCmsSchema.forEach((item) => {\n const inputField = { ...item }\n if (initialValues[inputField.id] !== undefined) {\n // map required fields\n const found = fields.some(\n (el) => el.optional && el.input_type === inputField.field,\n )\n if (found) {\n inputField.validations = inputField.validations.filter(\n (el) => el.input_type !== 'required',\n )\n }\n usedFields.push(inputField)\n }\n })\n\n // create global schema\n const yepSchema = usedFields.reduce(createYupSchema, {})\n const validateSchema = yup.object().shape(yepSchema)\n\n const methods = useForm({\n resolver: yupResolver(validateSchema),\n defaultValues: initialValues,\n mode: 'onTouched',\n })\n\n useEffect(() => {\n if (campaign?.campaign) {\n methods.setValue('campaign_code', campaign.campaign)\n }\n\n if (campaign?.media) {\n const code = methods.getValues('campaign_code')\n methods.setValue('campaign_code', code + campaign.media)\n }\n\n if (campaign?.brochure) {\n methods.setValue('campaign_response_code', campaign.brochure)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [campaign])\n\n useEffect(() => {\n if (query?.email) {\n methods.setValue('email', query.email)\n }\n\n if (query?.title) {\n methods.setValue('title', query.title)\n }\n\n if (query?.firstname || query?.first_name) {\n methods.setValue('first_name', query.firstname || query.first_name)\n }\n\n if (query?.lastname || query?.last_name) {\n methods.setValue('last_name', query.lastname || query.last_name)\n }\n }, [query])\n\n const DropDownOnChange = (e) => {\n methods.setValue('preference', e.target.value)\n methods.trigger('preference')\n }\n\n // Fields builder\n const InputRenderer = ({ fieldComponents }: any) => {\n const Components = {\n DropDown,\n Email,\n FirstName,\n LastName,\n Tel,\n Tel_optional: Tel,\n Title,\n }\n return fieldComponents.map((field, key) => {\n const FieldComp = Components[field.input_type] || null\n const props = {}\n if (FieldComp) {\n if (field.input_type.includes('_optional')) {\n props.optional = true\n }\n if (field.helper) props.helper = field.helper\n if (field.input_type === 'DropDown') {\n props.options = content.options\n props.name = 'preference'\n props.label = 'Event Selection'\n props.onChange = DropDownOnChange\n }\n }\n\n return \n })\n }\n\n const PrizeDrawFields = useMemo(\n () => ,\n content.fields,\n )\n\n const onSubmit = async (data: any) => {\n setSubmitResponse('')\n await axios({\n method: 'post',\n url: `${process.env.NEXT_PUBLIC_API}/prize-draw`,\n headers: {\n 'Content-Type': 'application/json',\n },\n data,\n })\n .then(() => {\n formEvent({\n conversion: 1,\n name: tracking.form,\n step: 'form-submit',\n variant: tracking.variant,\n page: tracking.page,\n })\n closeOverlay(\n content.confirmation.title,\n content.confirmation.copy,\n setSubmitResponse,\n )\n })\n .catch(() => {\n formEvent({\n conversion: 0,\n name: tracking.form,\n step: 'form-error',\n variant: tracking.variant,\n page: tracking.page,\n })\n setSubmitResponse(ERROR_MESSAGE)\n throw new Error(ERROR_MESSAGE)\n })\n }\n\n return (\n <>\n \n \n \n \n
\n \n {PrizeDrawFields}\n \n \n \n
\n \n
\n \n )\n}\n\ninterface Params extends ParsedUrlQuery {\n id: string\n}\n\nexport const getServerSideProps: GetServerSideProps = async (context) => {\n const brand = context.locale\n const form = 'prize-draw'\n const { id } = context.params as Params\n const content = await import(\n `../../content/${brand}/forms/prize-draw/cms-forms/${id}.md`\n ).catch(() => null)\n const settings = await import(\n `../../content/${brand}/settings/global.md`\n ).catch(() => null)\n\n // redirect if not active and redirect url exist\n if (!content.attributes?.active && content.attributes?.redirect) {\n const destination = new URL(content.attributes?.redirect)\n\n Object.entries(context.query).forEach((element) => {\n if (element.length > 1 && element[0] !== 'id') {\n const key = element[0]\n const value = element[1] as string\n destination.searchParams.append(key, value)\n }\n })\n\n return {\n redirect: {\n destination: destination.href,\n permanent: true,\n },\n }\n }\n\n // if no content/disabled - show 404\n if (\n !content ||\n content.attributes.fields.length === 0 ||\n !content.attributes?.active\n ) {\n return {\n notFound: true,\n }\n }\n\n // if content property 'hold' or settings property 'maintenance' is true, redirect to holding page\n if (content.attributes?.hold || settings.attributes.maintenance) {\n return {\n redirect: {\n destination: '/maintenance',\n permanent: false,\n },\n }\n }\n\n return {\n props: {\n models: getModels(brand, form),\n content: content.attributes,\n title: content.attributes.title,\n tracking: {\n page: id,\n form: `lead-${id}`,\n variant: '',\n initialStep: 'contact-details',\n },\n description: '',\n ...(await getPageData(context, form)),\n },\n }\n}\n\nPrizeDraw.whyDidYouRender = true\n\nexport default PrizeDraw\n","/* eslint-disable no-param-reassign */\nimport * as yup from 'yup'\n\nexport function createYupSchema(schema, config) {\n const { id, validationType, validations = [] } = config\n if (!yup[validationType]) {\n return schema\n }\n let validator = yup[validationType]()\n validations.forEach((validation) => {\n const { params, type } = validation\n if (!validator[type]) {\n return\n }\n if (type === 'when') {\n const [field, options] = params\n validator = validator.when(field, (value, conditionSchema) => {\n if (options.is(value)) {\n return conditionSchema.required(options.then.message).trim()\n }\n return conditionSchema\n })\n } else {\n validator = validator[type](...params)\n }\n })\n schema[id] = validator\n return schema\n}\n","(self[\"webpackChunk_N_E\"] = self[\"webpackChunk_N_E\"] || []).push([[3825],{\n\n/***/ 95828:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/prize-draw/[id]\",\n function () {\n return __webpack_require__(17644);\n }\n ]);\n if(false) {}\n \n\n/***/ }),\n\n/***/ 17644:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"__N_SSP\": function() { return /* binding */ __N_SSP; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(28598);\n/* harmony import */ var _components_form_fields__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(80505);\n/* harmony import */ var _components_form_layout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(76817);\n/* harmony import */ var _components_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68551);\n/* harmony import */ var _contexts_useCampaign__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(19168);\n/* harmony import */ var _hookform_resolvers_yup__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(97859);\n/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(67958);\n/* harmony import */ var _utils_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(45911);\n/* harmony import */ var _utils_helpers_createYupSchema__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(69192);\n/* harmony import */ var _utils_helpers_tracking__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(68379);\n/* harmony import */ var _utils_schemas__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(76827);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(46392);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(82684);\n/* harmony import */ var react_hook_form__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(75367);\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(38797);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst PrizeDraw = (param)=>{\n let { content , tracking , brand , query } = param;\n const [submitResponse, setSubmitResponse] = (0,react__WEBPACK_IMPORTED_MODULE_11__.useState)(\"\");\n const { hidden_fields: hiddenFields , fields } = content;\n const campaign = (0,_contexts_useCampaign__WEBPACK_IMPORTED_MODULE_4__/* .useCampaign */ .y)();\n let initialValues = {};\n const usedFields = [];\n // build initialValues from cms fields\n _utils_schemas__WEBPACK_IMPORTED_MODULE_9__/* .PrizeDrawCmsSchema.forEach */ .EM.forEach((item)=>{\n const found = fields.some((el)=>el.input_type === item.field);\n if (found) {\n var ref;\n if ((ref = item.field) === null || ref === void 0 ? void 0 : ref.includes(\"_optional\")) {\n // eslint-disable-next-line no-param-reassign\n item.id = item.id.replace(\"_optional\", \"\");\n }\n initialValues[item.id] = item.value || \"\";\n }\n });\n // remove empty response codes fields\n Object.keys(hiddenFields).forEach((key)=>{\n if (hiddenFields[key] === \"\" || hiddenFields[key] === null) {\n delete hiddenFields[key];\n }\n });\n // combine all fields\n initialValues = {\n ...initialValues,\n ...hiddenFields,\n is_lexus: brand === \"lexus\",\n is_dealer: false,\n dealer_name: \"\"\n };\n // map fields with schemas\n _utils_schemas__WEBPACK_IMPORTED_MODULE_9__/* .PrizeDrawCmsSchema.forEach */ .EM.forEach((item)=>{\n const inputField = {\n ...item\n };\n if (initialValues[inputField.id] !== undefined) {\n // map required fields\n const found = fields.some((el)=>el.optional && el.input_type === inputField.field);\n if (found) {\n inputField.validations = inputField.validations.filter((el)=>el.input_type !== \"required\");\n }\n usedFields.push(inputField);\n }\n });\n // create global schema\n const yepSchema = usedFields.reduce(_utils_helpers_createYupSchema__WEBPACK_IMPORTED_MODULE_7__/* .createYupSchema */ .E, {});\n const validateSchema = yup__WEBPACK_IMPORTED_MODULE_12__.object().shape(yepSchema);\n const methods = (0,react_hook_form__WEBPACK_IMPORTED_MODULE_13__/* .useForm */ .cI)({\n resolver: (0,_hookform_resolvers_yup__WEBPACK_IMPORTED_MODULE_14__/* .yupResolver */ .X)(validateSchema),\n defaultValues: initialValues,\n mode: \"onTouched\"\n });\n (0,react__WEBPACK_IMPORTED_MODULE_11__.useEffect)(()=>{\n if (campaign === null || campaign === void 0 ? void 0 : campaign.campaign) {\n methods.setValue(\"campaign_code\", campaign.campaign);\n }\n if (campaign === null || campaign === void 0 ? void 0 : campaign.media) {\n const code = methods.getValues(\"campaign_code\");\n methods.setValue(\"campaign_code\", code + campaign.media);\n }\n if (campaign === null || campaign === void 0 ? void 0 : campaign.brochure) {\n methods.setValue(\"campaign_response_code\", campaign.brochure);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n campaign\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_11__.useEffect)(()=>{\n if (query === null || query === void 0 ? void 0 : query.email) {\n methods.setValue(\"email\", query.email);\n }\n if (query === null || query === void 0 ? void 0 : query.title) {\n methods.setValue(\"title\", query.title);\n }\n if ((query === null || query === void 0 ? void 0 : query.firstname) || (query === null || query === void 0 ? void 0 : query.first_name)) {\n methods.setValue(\"first_name\", query.firstname || query.first_name);\n }\n if ((query === null || query === void 0 ? void 0 : query.lastname) || (query === null || query === void 0 ? void 0 : query.last_name)) {\n methods.setValue(\"last_name\", query.lastname || query.last_name);\n }\n }, [\n query\n ]);\n const DropDownOnChange = (e)=>{\n methods.setValue(\"preference\", e.target.value);\n methods.trigger(\"preference\");\n };\n // Fields builder\n const InputRenderer = (param)=>{\n let { fieldComponents } = param;\n const Components = {\n DropDown: _components_form_fields__WEBPACK_IMPORTED_MODULE_1__/* .DropDown */ .vb,\n Email: _components_form_fields__WEBPACK_IMPORTED_MODULE_1__/* .Email */ .GT,\n FirstName: _components_form_fields__WEBPACK_IMPORTED_MODULE_1__/* .FirstName */ .SW,\n LastName: _components_form_fields__WEBPACK_IMPORTED_MODULE_1__/* .LastName */ .uQ,\n Tel: _components_form_fields__WEBPACK_IMPORTED_MODULE_1__/* .Tel */ .ki,\n Tel_optional: _components_form_fields__WEBPACK_IMPORTED_MODULE_1__/* .Tel */ .ki,\n Title: _components_form_fields__WEBPACK_IMPORTED_MODULE_1__/* .Title */ .Dx\n };\n return fieldComponents.map((field, key)=>{\n const FieldComp = Components[field.input_type] || null;\n const props = {};\n if (FieldComp) {\n if (field.input_type.includes(\"_optional\")) {\n props.optional = true;\n }\n if (field.helper) props.helper = field.helper;\n if (field.input_type === \"DropDown\") {\n props.options = content.options;\n props.name = \"preference\";\n props.label = \"Event Selection\";\n props.onChange = DropDownOnChange;\n }\n }\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(FieldComp, {\n ...props\n }, key);\n });\n };\n const PrizeDrawFields = (0,react__WEBPACK_IMPORTED_MODULE_11__.useMemo)(()=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(InputRenderer, {\n fieldComponents: content.fields\n }), content.fields);\n const onSubmit = async (data)=>{\n setSubmitResponse(\"\");\n await (0,axios__WEBPACK_IMPORTED_MODULE_10__/* [\"default\"] */ .ZP)({\n method: \"post\",\n url: \"\".concat(\"https://api.toyota.co.uk/forms/api\", \"/prize-draw\"),\n headers: {\n \"Content-Type\": \"application/json\"\n },\n data\n }).then(()=>{\n (0,_utils_helpers_tracking__WEBPACK_IMPORTED_MODULE_8__/* .formEvent */ .Be)({\n conversion: 1,\n name: tracking.form,\n step: \"form-submit\",\n variant: tracking.variant,\n page: tracking.page\n });\n (0,_utils_helpers__WEBPACK_IMPORTED_MODULE_6__/* .closeOverlay */ .Km)(content.confirmation.title, content.confirmation.copy, setSubmitResponse);\n }).catch(()=>{\n (0,_utils_helpers_tracking__WEBPACK_IMPORTED_MODULE_8__/* .formEvent */ .Be)({\n conversion: 0,\n name: tracking.form,\n step: \"form-error\",\n variant: tracking.variant,\n page: tracking.page\n });\n setSubmitResponse(_utils_constants__WEBPACK_IMPORTED_MODULE_5__/* .ERROR_MESSAGE */ .c9);\n throw new Error(_utils_constants__WEBPACK_IMPORTED_MODULE_5__/* .ERROR_MESSAGE */ .c9);\n });\n };\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ui__WEBPACK_IMPORTED_MODULE_3__/* .Nav */ .JL, {\n title: content.title,\n background: content.background,\n color: content === null || content === void 0 ? void 0 : content.font_colour\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_form_layout__WEBPACK_IMPORTED_MODULE_2__/* .FormWrapper */ .n, {\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_form_layout__WEBPACK_IMPORTED_MODULE_2__/* .FormStep */ .p, {\n title: content.details.title,\n subtitle: content.details.subtitle,\n step: 1,\n active: true,\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_hook_form__WEBPACK_IMPORTED_MODULE_13__/* .FormProvider */ .RV, {\n ...methods,\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"form\", {\n onSubmit: methods.handleSubmit(onSubmit),\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_form_fields__WEBPACK_IMPORTED_MODULE_1__/* .AuthFill */ .Pl, {}),\n PrizeDrawFields,\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_form_fields__WEBPACK_IMPORTED_MODULE_1__/* .MarketingConsent */ .nb, {}),\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_form_fields__WEBPACK_IMPORTED_MODULE_1__/* .Button */ .zx, {\n submitResponse: submitResponse,\n children: content.details.submit\n })\n ]\n })\n })\n })\n })\n ]\n });\n};\nPrizeDraw.whyDidYouRender = true;\nvar __N_SSP = true;\n/* harmony default export */ __webpack_exports__[\"default\"] = (PrizeDraw);\n\n\n/***/ }),\n\n/***/ 69192:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"E\": function() { return /* binding */ createYupSchema; }\n/* harmony export */ });\n/* harmony import */ var yup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(38797);\n/* eslint-disable no-param-reassign */ \nfunction createYupSchema(schema, config) {\n const { id , validationType , validations =[] } = config;\n if (!yup__WEBPACK_IMPORTED_MODULE_0__[validationType]) {\n return schema;\n }\n let validator = yup__WEBPACK_IMPORTED_MODULE_0__[validationType]();\n validations.forEach((validation)=>{\n const { params , type } = validation;\n if (!validator[type]) {\n return;\n }\n if (type === \"when\") {\n const [field, options] = params;\n validator = validator.when(field, (value, conditionSchema)=>{\n if (options.is(value)) {\n return conditionSchema.required(options.then.message).trim();\n }\n return conditionSchema;\n });\n } else {\n validator = validator[type](...params);\n }\n });\n schema[id] = validator;\n return schema;\n}\n\n\n/***/ })\n\n},\n/******/ function(__webpack_require__) { // webpackRuntimeModules\n/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }\n/******/ __webpack_require__.O(0, [6572,6018,3163,6276,9774,2888,179], function() { return __webpack_exec__(95828); });\n/******/ var __webpack_exports__ = __webpack_require__.O();\n/******/ _N_E = __webpack_exports__;\n/******/ }\n]);"],"names":["self","push","__unused_webpack_module","__unused_webpack_exports","__webpack_require__","window","__NEXT_P","__webpack_exports__","r","d","__N_SSP","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","_components_form_fields__WEBPACK_IMPORTED_MODULE_1__","_components_form_layout__WEBPACK_IMPORTED_MODULE_2__","_components_ui__WEBPACK_IMPORTED_MODULE_3__","_contexts_useCampaign__WEBPACK_IMPORTED_MODULE_4__","_hookform_resolvers_yup__WEBPACK_IMPORTED_MODULE_14__","_utils_constants__WEBPACK_IMPORTED_MODULE_5__","_utils_helpers__WEBPACK_IMPORTED_MODULE_6__","_utils_helpers_createYupSchema__WEBPACK_IMPORTED_MODULE_7__","_utils_helpers_tracking__WEBPACK_IMPORTED_MODULE_8__","_utils_schemas__WEBPACK_IMPORTED_MODULE_9__","axios__WEBPACK_IMPORTED_MODULE_10__","react__WEBPACK_IMPORTED_MODULE_11__","react_hook_form__WEBPACK_IMPORTED_MODULE_13__","yup__WEBPACK_IMPORTED_MODULE_12__","PrizeDraw","content","tracking","brand","query","param","submitResponse","setSubmitResponse","useState","hidden_fields","hiddenFields","fields","campaign","y","initialValues","usedFields","EM","forEach","found","some","el","input_type","item","field","ref","includes","id","replace","value","Object","keys","key","is_lexus","is_dealer","dealer_name","inputField","undefined","optional","validations","filter","yepSchema","reduce","E","validateSchema","object","shape","methods","cI","resolver","X","defaultValues","mode","useEffect","setValue","media","code","getValues","brochure","email","title","firstname","first_name","lastname","last_name","DropDownOnChange","e","target","trigger","InputRenderer","fieldComponents","Components","DropDown","vb","Email","GT","FirstName","SW","LastName","uQ","Tel","ki","Tel_optional","Title","Dx","map","FieldComp","props","helper","options","name","label","onChange","jsx","PrizeDrawFields","useMemo","onSubmit","data","ZP","method","url","concat","headers","then","Be","conversion","form","step","variant","page","Km","confirmation","copy","catch","c9","jsxs","Fragment","children","JL","background","color","font_colour","n","p","details","subtitle","active","RV","handleSubmit","Pl","nb","zx","submit","whyDidYouRender","createYupSchema","yup__WEBPACK_IMPORTED_MODULE_0__","schema","config","validationType","validator","params","type","validation","when","conditionSchema","is","required","message","trim","O","s","_N_E"],"sourceRoot":""}